package br.com.jk.cotacaocompra.lista;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorOrder;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.hibernate.annotations.NaturalId;

/**
 *
 * @author camilo
 */
@Entity
@Table(name = CotacaoCompraDao.NAME_TABLE, schema = CotacaoCompraDao.NAME_SCHEMA)
@XmlRootElement(name = "produtos")
@XmlAccessorType(XmlAccessType.FIELD)
public class CotacaoCompra implements Serializable {

  public static final String ATTRIBUTE_CODIGO = "codigo";
  public static final String ATTRIBUTE_DESCRICAO = "descricao";
  public static final String ATTRIBUTE_COMPLEMENTO = "complemento";
  public static final String ATTRIBUTE_QUANTIDADE = "quantidade";
  public static final String ATTRIBUTE_EMB = "emb";
  public static final String ATTRIBUTE_ESPECIE = "especie";
  public static final String ATTRIBUTE_MARCA = "marca";
  public static final String ATTRIBUTE_UNIDADE = "unidade";
  public static final String ATTRIBUTE_QEMB = "qEmb";
  private static final long serialVersionUID = 1L;
  @Id
  @Column(name = CotacaoCompraDao.NAME_COLUMN_CODIGO, length = 8)
  @XmlElement(name = "codigo")
  private BigDecimal codigo;
  @Column(name = CotacaoCompraDao.NAME_COLUMN_DESCRICAO, length = 40)
  @XmlElement(name = "descricao")
  private String descricao;
  @Column(name = CotacaoCompraDao.NAME_COLUMN_COMPLEMENTO, length = 20)
  @XmlElement(name = "complemento")
  private String complemento;
  @Column(name = CotacaoCompraDao.NAME_COLUMN_MARCA, length = 30)
  @XmlElement(name = "marca")
  private String marca;
  @Column(name = CotacaoCompraDao.NAME_COLUMN_UNIDADE, length = 3)
  private String unidade;
  @Column(name = CotacaoCompraDao.NAME_COLUMN_QEMB, length = 8)
  private BigDecimal qEmb;
  @Column(name = CotacaoCompraDao.NAME_COLUMN_QUANTIDADE, length = 10, precision = 3)
  @XmlElement(name = "quantidade")
  private BigDecimal quantidade;
  @Column(name = CotacaoCompraDao.NAME_COLUMN_EMB, length = 2)
  private String emb;
  @Column(name = CotacaoCompraDao.NAME_COLUMN_ESPECIE, length = 4)
  private String especie;

  @Override
  public int hashCode() {
    int hash = 7;
    hash = 89 * hash + Objects.hashCode(this.codigo);
    hash = 89 * hash + Objects.hashCode(this.descricao);
    hash = 89 * hash + Objects.hashCode(this.complemento);
    hash = 89 * hash + Objects.hashCode(this.marca);
    hash = 89 * hash + Objects.hashCode(this.unidade);
    hash = 89 * hash + Objects.hashCode(this.qEmb);
    hash = 89 * hash + Objects.hashCode(this.quantidade);
    hash = 89 * hash + Objects.hashCode(this.emb);
    hash = 89 * hash + Objects.hashCode(this.especie);
    return hash;
  }

  @Override
  public boolean equals(Object obj) {
    if (obj == null) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    final CotacaoCompra other = (CotacaoCompra) obj;
    if (!Objects.equals(this.codigo, other.codigo)) {
      return false;
    }
    if (!Objects.equals(this.descricao, other.descricao)) {
      return false;
    }
    if (!Objects.equals(this.complemento, other.complemento)) {
      return false;
    }
    if (!Objects.equals(this.marca, other.marca)) {
      return false;
    }
    if (!Objects.equals(this.unidade, other.unidade)) {
      return false;
    }
    if (!Objects.equals(this.qEmb, other.qEmb)) {
      return false;
    }
    if (!Objects.equals(this.quantidade, other.quantidade)) {
      return false;
    }
    if (!Objects.equals(this.emb, other.emb)) {
      return false;
    }
    if (!Objects.equals(this.especie, other.especie)) {
      return false;
    }
    return true;
  }

  public BigDecimal getCodigo() {
    return codigo;
  }

  public void setCodigo(BigDecimal codigo) {
    this.codigo = codigo;
  }

  public String getDescricao() {
    return descricao;
  }

  public void setDescricao(String descricao) {
    this.descricao = descricao;
  }

  public String getComplemento() {
    return complemento;
  }

  public void setComplemento(String complemento) {
    this.complemento = complemento;
  }

  public String getMarca() {
    return marca;
  }

  public void setMarca(String marca) {
    this.marca = marca;
  }

  public String getUnidade() {
    return unidade;
  }

  public void setUnidade(String unidade) {
    this.unidade = unidade;
  }

  public BigDecimal getqEmb() {
    return qEmb;
  }

  public void setqEmb(BigDecimal qEmb) {
    this.qEmb = qEmb;
  }

  public BigDecimal getQuantidade() {
    return quantidade;
  }

  public void setQuantidade(BigDecimal quantidade) {
    this.quantidade = quantidade;
  }

  public String getEmb() {
    return emb;
  }

  public void setEmb(String emb) {
    this.emb = emb;
  }

  public String getEspecie() {
    return especie;
  }

  public void setEspecie(String especie) {
    this.especie = especie;
  }

}
